package visitorPattern

/**
 * 结构角色
 */
class ObjectStructure {
    private val elements: ArrayList<Element> = ArrayList()

    //执行访问操作
    fun action(vi: Visitor) {
        elements.forEach {
            it.accept(vi)
        }
    }

    //添加新元素
    private fun add(element: Element) {
        elements.add(element)
    }

    //元素生成器
    fun createElements() {
        for (i in 1..10) {
            if (i % 2 == 0) {
                this.add(ConcreteElementOne())
            } else {
                this.add(ConcreteElementTwo())
            }
        }
    }
}